# 0. 导入必要的库
import os

from xgboost import XGBClassifier
from util import load, get, dump
from lazypredict.Supervised import LazyClassifier
from sklearn.metrics import f1_score
from sklearn.model_selection import train_test_split
from util import load,get,dump

# 1. 加载训练集和测试集
X_train, X_test, y_train, y_test = load("X_train, X_test, y_train, y_test", f'{get("Xy_root")}/Xy')
# 2. 使用LazyClassifier进行快速模型评估
print("开始评估所有的模型:")
clf = LazyClassifier(verbose=0,ignore_warnings=True, custom_metric=None)
models, predictions = clf.fit(X_train, X_test, y_train, y_test)
print(models) # 打印不同模型的评估结果对比
#print(scores) # 打印不同模型的评估结果对比

# 3. 获取F1分数最高的模型
best_model_name = models['F1 Score'].idxmax()
print("F1分数最高的模型是: ", best_model_name)
# 根据模型名称，从模型字典中获取模型对象
best_model = clf.models[best_model_name] # 获取最佳模型

model_dir = get("model_root")
if not os.path.exists(model_dir):
    os.makedirs(model_dir)
# 4. 序列化最佳模型
model_path = f'{model_dir}/best_model'
dump(best_model, "最好的F1分数的模型", model_path) # 序列化最佳模型